package com.lz.demo.log.log4j2;


import com.lz.demo.log.log4j2.subpackage.SubPackageTest;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 * log4j2 转为 logback（已经实现了slf4j），相当于不用改应用层代码的调用，直接改了底层实现、
 * 所以只需要使用 log4j2 的 api + logback-classic（实现了 slf4j） + log4j-to-slf4j 的转换
 * 需要注意 log4j2 和 logback level 对应关系：前者有 6 级，后者只有 5 级（刚好相同的等级名字都一样），这就导致 log4j2 的 fatal 只能对应
 * logback 的 error 了，从下面的运行日志可以看出来：
 * 2024-04-10 10:43:27.111 ERROR [,] [main]  com.lz.demo.log.log4j2.Log4j2ToLogbackTest log4j2 error print
 * 2024-04-10 10:43:27.111 ERROR [,] [main]  com.lz.demo.log.log4j2.Log4j2ToLogbackTest log4j2 fatal print
 */
public class Log4j2ToLogbackTest {

    static final Logger LOGGER = LogManager.getLogger(Log4j2ToLogbackTest.class);

    public static void main( String[] args ) {
        LOGGER.trace("log4j2 trace print");
        LOGGER.debug("log4j2 debug print");
        LOGGER.info("log4j2 info print");
        LOGGER.warn("log4j2 warn print");
        LOGGER.error("log4j2 error print");
        // 只能对应 logback 的 error
        LOGGER.fatal("log4j2 fatal print");

        SubPackageTest.testPackageFilter();
    }
}
